home *** CD-ROM | disk | FTP | other *** search
-
- Microsoft Mouse COM port interrupt fix.
-
- The Microsoft mouse driver makes a dangerous assumption when it
- finds a serial mouse attached to your computer. If you only have
- two COM ports all will be transparently well. But for those of you
- wanting to connect the mouse to COM3 or COM4 you run into a
- situation that assumes COM3 is using INT 4 and COM4 uses INT 3.
- For most default installations this is correct, but what if you
- also want to use another interrupt driven serial port that
- uses the same interrupt vector. You can't. The mouse driver
- grabs it and hangs on. The only way to correct it is to move
- that serial port to another interrupt vector, say INT 2. The
- mouse driver runs and indicates that it installed, but all is
- not well, your mouse doesn't work. The driver install ASSUMES
- a defacto STANDARD configuration and doesn't bother even checking!
-
- To remedy the situation is an easy patch to a table in the mouse
- driver. Use a file hex editor like NORTON or PCTOOLS and search
- MOUSE.COM or MOUSE.SYS for:
-
- F8 03 0C EF ;Com 1
- F8 02 0B F7 ;Com 2
- E8 03 0C EF ;Com 3
- E8 02 0B F7 ;Com 4
-
-
- For version 7.00 MOUSE.COM this is at Offset 3468h.
- For version 7.00 MOUSE.SYS this is at Offset 34C0h.
- For version 7.04 MOUSE.COM this is at Offset 46BFh.
- For version 7.04 MOUSE.SYS this is at Offset 4717h.
-
- If you are a Windows user then you will also need to patch Windows.
- For some reason Microsoft decided to have Windows drive the mouse
- itself so if you only use your mouse for Windows then you need not
- load the mouse driver before running Windows.
-
- For version 2.11 Windows 386 the table is in WIN200.BIN. The table is
- as described above execpt it only contains COM1 and COM2 port info.
- The table offset will vary from configuration to configuration. WIN200.BIN
- is created during SETUP depending on the equipment configuration.
- In any case the patch will be the same.
-
- For version 3.0 Windows the table is in MOUSE.DRV at offset 82Ch.
-
- The first two bytes of each entry are the serial ports base address.
-
- The next byte is the actual interrupt vector. The interrupt jumpers most
- of you are used to dealing with refer to the designations as they are
- assigned on the PC bus not the actual microprocessor vectors. The bus
- interrupt requests are routed to an 8259 interrupt controller. This
- device is offset from INT 0 by 8. So INT 2 (Bus) is in actuality INT 0Ah.
-
- The last byte is a value that gets ANDed with the value on I/O port 21h
- which is the 8259 interrupt controller control port. This is a bit mapped
- port which indicates which interrupts are pending. The LSB is INT 0 and
- the MSB is INT 7.
-
- For convenience these are the numbers you need to use for your interrupt
- choice:
-
- INT 2 - 0A FB
- INT 3 - 0B F7
- INT 4 - 0C EF
- INT 5 - 0D BF
- INT 7 - 0F 7F
-
- So decide which port you are going to connect to, pick an interrupt and patch
- one of the entries. I used COM3 and INT2 and patched the first table
- entry (COM1) as:
-
- 0E 03 0A FB
-
- As for other versions of Windows or other versions of mouse drivers I
- would assume the same patch would work just go in and look for it!
-
- Dave Karr
-
- Email via Exec-PC
-